package controllers

import (
	// "database/sql"
	// "encoding/json"
	"fmt"
	"net/http"
	// "test/model"
	"strconv"
	"net/rpc"
	"os"
	// _ "test/mysql"
)

/*
*return a json file
 */
type Args struct {
	I int
}
type MyMethod int

type DivResult struct {
	Quo, Rem int
}

func DataController(w http.ResponseWriter, r *http.Request) {

	// type Item struct {
	// 	Data []byte `json:uid`
	// 	// Username   string `json:username`
	// 	// Uepartment string `json:department`
	// 	// Ureated    string `json:created`
	// }
	// type Grid struct {
	// 	// Total int    `json:total`
	// 	Status int    `json:status`
	// 	Info   string `json:info`
	// 	Msg    []Item `json:product`
	// }
	var num_str string = r.FormValue("num")
	num :=0
	num,err :=  strconv.Atoi(num_str)
	if err != nil{
	  num = 1
	}
	// fmt.Fprintf( "id,%s\n",id)
	pClient, err := rpc.Dial("tcp", "127.0.0.1:7777")
	if err != nil {
		fmt.Fprintf(os.Stderr, "err : %s\n", err.Error())
		return
	}
	// <span style="white-space:pre">  defer pClient.Close()</span>

	// 同步RPC 
	var multResult []byte
	// nums := num
	err = pClient.Call("MyMethod.DataSource", &Args{num}, &multResult)
	if err != nil {
		fmt.Fprintf(os.Stderr, "err : %s\n", err.Error())
		return
	}
	// var m Grid
	// m.Status = 0
	// m.Info = "ok"
	// orderi := Item{Data: multResult}
	// m.Msg = append(m.Msg, orderi)
	// bytes, _ := json.Marshal(m)
	// fmt.Printf("json:m,%s\n", multResult)
	// bytes := []byte(`{"num":multResult}`)
	w.WriteHeader(http.StatusOK)
	w.Write(multResult)

}

// func checkErr(err error) {
// 	if err != nil {
// 		panic(err)
// 	}
// }
